package q342_isPowerOfFour;

public class Solution {
    /*
    两种方式：
    1 不断的除4直到余数不为零 看是否此时为1
    2 使用位运算
    首先4的幂指数必然是2的幂指数 所以其二进制必然是 001000。。这样的形式
    所以首先可以判断是否有(n & (n - 1)) == 0
    而后对于4的幂指数 这个00010000。。。中的1必然在一个奇数的位置上
    所以我们考虑integer范围内的一个数字 其二进制为（10101010。。。）如果是4的幂指数 那么和它的&必然不为0
     */
    public boolean isPowerOfFour(int n) {
//        if (n > 0) {
//            while (n % 4 == 0) n /= 4;
//            return n == 1;
//        }
//        return false;
        return n > 0 && ((n & (n - 1)) == 0) && ((n & 1431655765) != 0);
    }
}
